home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Development Platforms / Apple II / Essentials / Technical.Notes / IIGS / TN.IIGS.025 < prev    next >
Encoding:
Text File  |  1990-09-21  |  16.5 KB  |  373 lines  |  [TEXT/pdos]

  1. Apple II
  2. Technical Notes
  3. _____________________________________________________________________________
  4.                                                   Developer Technical Support
  5.  
  6. Apple IIgs
  7. #25:    Apple IIgs Firmware Reference Updates
  8.  
  9. Revised by:    Dave Lyons and Jim Luther                       September 1990
  10. Written by:    Rilla Reynolds                                    October 1987
  11.  
  12. This Technical Note includes updates to the May 1987 edition of the Apple IIgs 
  13. Firmware Reference, published by Addison-Wesley (Part Number 030-3121-A).  The 
  14. new Monitor commands require an Apple IIgs revised ROM (Part Number 342-0077-
  15. B), which is available without charge from an authorized Apple dealer.  Please 
  16. contact Apple II Developer Technical Support at the address listed in Apple II 
  17. Technical Note #0 if you have additional corrections or suggestions for this 
  18. manual.
  19. Changes since May 1990:  Added a section about register sizes for several $E1 
  20. vectors (Appendix D).
  21. _____________________________________________________________________________
  22.  
  23.  
  24. Contents
  25.  
  26.     Page vii, Chapter 7  SmartPort Firmware:  Change "Generic SmartPort 
  27.     calls   121" to "Standard and Extended SmartPort calls   121."
  28.  
  29.  
  30. Chapter 2:  Notes For Programmers
  31.  
  32.     Page 11, Environment for the Firmware Routines:  Refer to Apple IIgs 
  33.     Technical Note #88, The Page One Stack in a 16-Bit World for more 
  34.     information on manipulating the stack pointer.
  35.  
  36.  
  37. Chapter 3:  System Monitor Firmware
  38.  
  39.     Page 24, Table 3-1 (continued), Monitor commands grouped by type:  Add a 
  40.     miscellaneous-type and a debugging-type Monitor command to the table, as 
  41.     follows:
  42.  
  43.       Command type                                             Command format
  44.       _______________________________________________________________________
  45.       ...
  46.       Quit Monitor                                             Q
  47.       Install Visit Monitor and MemoryPeeker desk accessories  #
  48.       ...
  49.       Enter mini-assembler                                     !
  50.       Set flags (e, m, x) for full-native mode                 Control-N
  51.       _______________________________________________________________________
  52.  
  53.     Page 43, Back to BASIC:  The last paragraph should read:  "If you are using 
  54.     DOS 3.3 or ProDOS(R), use the Monitor Q (Quit) command to return to the 
  55.     language you were using with your program and variables intact."
  56.  
  57.     Page 48, Table 3-6, Commands for program execution and debugging:  Add a 
  58.     Monitor command to the table:
  59.  
  60.       Command type                                             Command format
  61.       _______________________________________________________________________
  62.       ...
  63.       Enter mini-assembler                                     !
  64.       Set flags (e, m, x) for full-native mode                 Control-N
  65.       _______________________________________________________________________
  66.   
  67.     Page 66, after final paragraph:  Add a new Monitor instruction heading and 
  68.     description:
  69.  
  70.       Native Mode Set Control-N (Native Mode)
  71.  
  72.       Control-N sets the m, x, e flags to 0 for full-native mode.  All 
  73.       other registers are unchanged.
  74.  
  75.     Page 67, after final paragraph:  Add a new Monitor instruction heading and 
  76.     description:
  77.  
  78.       Turn on ROM Desk Accessories, #
  79.  
  80.       Enables the currently available ROM desk accessories, Visit Monitor 
  81.       and Memory Peeker.  These desk accessories remain active in the desk 
  82.       accessory menu until power is shut off.  Control-Open Apple-Reset has 
  83.       no affect on these items.  To exit the Visit Monitor desk accessory, 
  84.       press Control-Y then press Return.  To exit the Memory Peeker desk 
  85.       accessory, press Q.
  86.  
  87.  
  88. Chapter 4:  Video Firmware
  89.  
  90.     Page 77, Table 4-4, Control characters with 80-column firmware on:  Change 
  91.     the actions taken by Control-E and Control-F to read (they were reversed):
  92.  
  93.       ________________________________________________
  94.       Control character        Action taken by C3COUT1
  95.       ________________________________________________
  96.       Control-E                Turns cursor on
  97.       Control-F                Turns cursor off
  98.       ________________________________________________
  99.  
  100.  
  101. Chapter 5:  Serial-Port Firmware
  102.  
  103.     Page 82, Compatibility:  The second half of the third sentence in the first 
  104.     paragraph should read:  "...the Apple IIgs hardware is different from that 
  105.     used on the SSC."
  106.  
  107.     Page 91, Input buffering, BE and BD:  This heading should be "Input/Output 
  108.     buffering, BE and BD."
  109.  
  110.     Page 94, Table 5-6:  The Extended Interface footnote which states, "If the 
  111.     function call returns with the carry bit set..." is incorrect.  For Apple 
  112.     IIgs ROM 01, the Extended Serial Interface does not return the error 
  113.     condition in the carry bit.  Programs using the Extended Serial Interface 
  114.     should check for a non-zero result value in the result code rather than the 
  115.     carry bit to determine if an error has occurred.  For additional error 
  116.     handling information using the Extended Interface, see Apple IIgs Technical 
  117.     Note #50, Extended Serial Interface Error Handling.
  118.  
  119.     Page 95, Error handling:  The second sentence should read:  "If the 
  120.     character has a framing or parity error (assuming that the parity option is 
  121.     not set to None), the character is deleted from the input stream and the 
  122.     appropriate mode bit is set."
  123.  
  124.     Page 96, Note:  The Note should read:  "The InQStatus elapsed-time counter 
  125.     functions correctly only if a heartbeat interrupt task has been started.  A 
  126.     heartbeat interrupt task is a set of functions called by interrupt code 
  127.     that run automatically at one-thirtieth of a second intervals.
  128.  
  129.     Page 96, Interrupt notification:  The fourth sentence in the first 
  130.     paragraph should be:  "The system interrupt handler will transfer control 
  131.     to the user's interrupt vector at $03FE in bank $00."
  132.  
  133.     Page 97, Interrupt notification:  The last three paragraphs should be 
  134.     replaced with this paragraph:  "The interrupt completion routine executes 
  135.     as part of the firmware interrupt handler and must be run in that 
  136.     environment.  The interrupt completion routine must preserve the DBR, 
  137.     speed, 8-bit native mode, D register, stack pointer (or just use the 
  138.     current stack), and MSLOT for proper operation. A/X/Y need not be 
  139.     preserved."
  140.  
  141.     Page 100, SetModeBits:  The first sentence in the paragraph following the 
  142.     CMDLIST should read:  "Use this call to alter any of the mode bits whose 
  143.     function is described below."
  144.  
  145.     Page 105, GetIntInfo:  The command list should read:
  146.  
  147.     CMDLIST    DFB    $03                   ;Parameter count
  148.                DFB    $0C                   ;Command code
  149.                DW     $00                   ;result code (output)
  150.                DW     $00                   ;interrupt setting (output)
  151.                DL     Completion address    ;(output)
  152.  
  153.     The following should be added after the command list:  "Note:  The 
  154.     Parameter count of $03 is correct even though there are four parameters."
  155.  
  156.     The following should be added after the last paragraph:  "Note:  Before 
  157.     making this call from an interrupt completion routine, you must set the 
  158.     operating environment to look and act exactly like a 6502 in all respects.  
  159.     During interrupt completion routines, you must preserve the DBR, speed, 8-
  160.     bit native mode, D register, stack pointer (or just use the current stack), 
  161.     and MSLOT for proper operation.  A/X/Y need not be preserved.  See 
  162.     "Environments for the Firmware Routines" in chapter 2, Notes for 
  163.     Programmers for details about setting and restoring the operating 
  164.     environment.
  165.  
  166.     Page 106, SetIntInfo:  The command list should read:
  167.  
  168.     CMDLIST    DFB    $03                   ;Parameter count
  169.                DFB    $0D                   ;Command code
  170.                DW     $00                   ;result code (output)
  171.                DW     Interrupt setting     ;(input)
  172.                DL     Completion address    ;(input)
  173.  
  174.     The following should be added after the command list, "Note:  The Parameter 
  175.     count of $03 is correct even though there are four parameters."
  176.  
  177.  
  178. Chapter 7:  SmartPort Firmware
  179.  
  180.     Page 120, Issuing a call to SmartPort:  The standard and extended SmartPort 
  181.     call examples should be:
  182.  
  183.     This is an example of a standard SmartPort call:
  184.  
  185.     SP_CALL        JSR    DISPATCH          ;Call SmartPort command dispatcher
  186.                    DC     i1'CMDNUM'        ;This specifies the command type
  187.                    DC     i2'CMDLIST'       ;Word ptr to param list in bank $00
  188.                    BCS    ERROR             ;Carry is set on an error
  189.  
  190.     This is an example of an extended SmartPort call:
  191.  
  192.     SP_EXT_CALL    JSR    DISPATCH          ;Call SmartPort command dispatcher
  193.                    DC     i1'CMDNUM+$40'    ;This specifies the ext cmd type
  194.                    DC     i4'CMDLIST'       ;Pointer to the parameter list
  195.                    BCS    ERROR             ;Carry is set on an error
  196.  
  197.     Page 121, Generic SmartPort calls:  Change occurrences of "Generic 
  198.     SmartPort Calls" to "Standard and Extended SmartPort Calls" in the header 
  199.     and the first sentence.  Refer to SmartPort Technical Note #2, SmartPort 
  200.     Calls Updated, for updated information on the SmartPort STATUS call.
  201.  
  202.     Page 122, Statcode = $00:  Change the function of bit 0 of the first device 
  203.     status byte to:  "1 = Device currently open (character devices only) or 
  204.     disk switched (block device only)."
  205.  
  206.     Page 124:  SmartPort device types should be same as those documented in 
  207.     SmartPort Technical Note #4, SmartPort Device Types.
  208.  
  209.     Page 125, SmartPort driver status:  See SmartPort Technical Note #2, 
  210.     SmartPort Calls Updated, for the correct format of the status list for unit 
  211.     0, status code 0.
  212.  
  213.     Vendors must request a Vendor ID Assignment from Developer Technical 
  214.     Support before using a specific value in bytes two and three.
  215.  
  216.     Page 125, Possible errors:  Add the following:
  217.         $1F    No interrupt.  Interrupts not supported.
  218.         $2B    No write.  Disk write-protected.
  219.         $2F    Offline.  Disk off-line or no disk in drive.
  220.  
  221.     Page 126, ReadBlock:  Add a sentence at the end of the first paragraph 
  222.     which reads, "On return, the X and Y registers indicate the number of bytes 
  223.     transferred."
  224.  
  225.     Page 131, Open:  The following changes apply for the CMDNUM:
  226.  
  227.                   Standard call    Extended call
  228.         CMDNUM    $06              $46
  229.  
  230.     Page 132, Read:  Add a sentence at the end of the first paragraph which 
  231.     reads, "On return, the X and Y registers indicate the number of bytes 
  232.     transferred."
  233.  
  234.     Page 140, Figure 7-8, Disk-sector format:  Change to the following:
  235.  
  236.     _____________________________________________________________________
  237.     |13      |F|D|A|9|T|S|S|F|A|D|A|F|1       |F|D|A|A|S|699     |4|D|A|F|
  238.     |5-Nibble|F|5|A|6|r|e|i|o|d|E|A|F|5-Nibble|F|5|A|D|e|GCR     | |E|A|F|
  239.     |SelfSync| | | | |a|c|d|r|r| | | |SelfSync| | | | |c|Nibbles |C| | | |
  240.     |Fields  | | | | |c|t|e|m|s| | | |Fields  | | | | |t|Fields  |h| | | |
  241.     |        | | | | |k|o| |a|L| | | |        | | | | |o|        |e| | | |
  242.     |        | | | | | |r| |t|R| | | |        | | | | |r|        |c| | | |
  243.     |        | | | | | | | | |C| | | |        | | | | | |        |k| | | |
  244.     |        | | | | | | | | | | | | |        | | | | | |        |s| | | |
  245.     |        | | | | | | | | | | | | |        | | | | | |        |u| | | |
  246.     |        | | | | | | | | | | | | |        | | | | | |        |m| | | |
  247.     _____________________________________________________________________
  248.     A SelfSync Field is four 20 microsecond selfsync nibbles written as
  249.     a sequence of five 16 microsecond nibbles.
  250.  
  251.     Page 140, ResetHook:  The Control code and Control list should be:
  252.  
  253.     ___________________________________________________________
  254.     Control Code    Control list
  255.     ___________________________________________________________
  256.     $06             Count low byte           $04
  257.                     Count high byte          $00
  258.                     Hook reference number    $xx, $00, $00, $00
  259.     ___________________________________________________________
  260.  
  261.     Page 141, SetInterleave:  The Control code and Control list should be:
  262.  
  263.     ___________________________________________________________
  264.     Control Code    Control list
  265.     ___________________________________________________________
  266.     $0A             Count low byte           $01
  267.                     Count high byte          $00
  268.                     Interleave               $01 to $0C
  269.     ___________________________________________________________
  270.  
  271.     Page 143, UniDiskStat:  The Status code and Status list should be:
  272.  
  273.     ___________________________________________________________
  274.     Status Code    Status list
  275.     ___________________________________________________________
  276.     $05            Byte                      $04
  277.                    Soft error                $00
  278.                    Retries                   $xx
  279.                    A register after execute  $xx
  280.                    Y register after execute  $xx
  281.                    P register after execute  $xx
  282.                    Byte                      $xx
  283.     ___________________________________________________________
  284.  
  285.     Page 152, Passing parameters to a ROM disk:  Add a sentence to the end of 
  286.     the second paragraph which reads:  "These locations will not be preserved 
  287.     between SmartPort calls."
  288.  
  289.     Page 156, Table 7-6, SmartPort error codes:  Add the following error code:
  290.  
  291.     Acc value    Error type    Description
  292.     ___________________________________________________________
  293.     $69          IOTERM        I/O terminated due to new line
  294.     ___________________________________________________________
  295.  
  296.     Page 166, Table 7-8, Standard command packet contents":
  297.     Byte 3 descriptions should read "Byte 2 of param list."
  298.     Byte 4 descriptions should read "Byte 3 of param list."
  299.     Byte 5 descriptions should read "Byte 4 of param list."
  300.     Byte 6 descriptions should read "Byte 5 of param list."
  301.     Byte 7 descriptions should read "Byte 6 of param list."
  302.     Byte 8 descriptions should read "Byte 7 of param list."
  303.     Byte 9 descriptions should read "Byte 8 of param list."
  304.  
  305.  
  306. Chapter 8:  Interrupt-Handler Firmware
  307.  
  308.     Page 184, Serial-port interrupt notification:  The last three paragraphs 
  309.     should be replaced with this paragraph:  "The interrupt completion routine 
  310.     executes as part of the firmware interrupt handler and must be run in that 
  311.     environment.  The interrupt completion routine must preserve the DBR, 
  312.     speed, 8-bit native mode, D register, stack pointer (or just use the 
  313.     current stack), and MSLOT for proper operation. A/X/Y need not be 
  314.     preserved."
  315.  
  316.  
  317. Chapter 9:  Apple DeskTop Bus Microcontroller
  318.  
  319.     Page 191, Sync, $07:  The first sentence should read: "This command 
  320.     performs the three preceding commands in sequence."
  321.  
  322.     Page 194, Receive Bytes, $48:  The fourth sentence should read:  "The 
  323.     second byte value is a combination of the device address in the high nibble 
  324.     and the ADB command in the low nibble (see the Apple IIgs Hardware 
  325.     Reference)."
  326.  
  327.  
  328. Chapter 10:  Mouse Firmware
  329.  
  330.     Page 201:  Mouse button positions should be changed as follows:
  331.  
  332.     o  X data byte
  333.        If bit 7 = 0, then mouse button 1 is down.
  334.        If bit 7 = 1, then mouse button 1 is up.
  335.  
  336.     o  Y data byte
  337.        If bit 7 = 0, then mouse button 0 is down.
  338.        If bit 7 = 1, then mouse button 0 is up.
  339.  
  340.     Page 205, Figure 10-1, Position and status information:
  341.     Bit 7 description should be:  "Currently, button 0 is up/down (0/1)."
  342.     Bit 6 description should be:  "Previously, button 0 was up/down (0/1)."
  343.  
  344.  
  345. Appendix B:  Firmware ID Bytes
  346.  
  347.     Page 223, Table B-2, Register bit information:  Change the table to show 
  348.     that Bits 7-0 of the Y register hold the ROM version number, and the X 
  349.     register is reserved.  In addition, the table description should read:  
  350.     "The Y register contains the machine ID and the ROM version number.  The X 
  351.     register is reserved."
  352.  
  353.     Page 249, COUT1:  In the third sentence, change the value of line feed from 
  354.     $8C to $8A.
  355.  
  356.     Page 277, RDALTZP:  Change the comment to read:  "Bit 7 = 1 if alt zp 
  357.     enabled."
  358.  
  359.  
  360. Appendix D:  Vectors
  361.  
  362.     Page 272:  At the end of the introductory paragraph, add "The vectors 
  363.     TOWRITEBRAM through TOPRINTMSG8 must be called in eight-bit native mode."
  364.  
  365.  
  366. Further Reference:
  367. _____________________________________________________________________________
  368.   o  Apple IIgs Firmware Reference
  369.   o  Apple IIgs Firmware Reference 1MB Apple IIgs Update
  370.   o  Apple IIgs Technical Note #50, Extended Serial Interface Handling
  371.   o  SmartPort Technical Note #2, SmartPort Calls Updated
  372.  
  373.